{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 面积图的绘制\n",
    "面积图是一种随时间变化而改变范围的图表，主要强调数量与时间的关系。\n",
    "\n",
    "\n",
    "面积图的作用：\n",
    "\n",
    "1、比折线图看起来更加美观。\n",
    "\n",
    "2、能够突出每个系别所占据的面积，把握整体趋势。\n",
    "\n",
    "3、不仅可以表示数量的多少，而且可以反映同一事物在不同时间里的发展变化的情况。\n",
    "\n",
    "4、可以纵向与其他系别进行比较，能够直观地反映出差异。\n",
    "\n",
    "5、可以用于商务报表、数据汇报等场景。\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 31 entries, 0 to 30\n",
      "Data columns (total 2 columns):\n",
      "Date     31 non-null datetime64[ns]\n",
      "Value    31 non-null float64\n",
      "dtypes: datetime64[ns](1), float64(1)\n",
      "memory usage: 624.0 bytes\n",
      "None\n",
      "        Date  Value\n",
      "0 2020-01-01    1.1\n",
      "1 2020-01-02    1.3\n",
      "2 2020-01-03    1.5\n",
      "3 2020-01-04    1.8\n",
      "4 2020-01-05    1.7\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/site-packages/pandas/plotting/_matplotlib/converter.py:103: FutureWarning: Using an implicitly registered datetime converter for a matplotlib plotting method. The converter was registered by pandas on import. Future versions of pandas will require you to explicitly register matplotlib converters.\n",
      "\n",
      "To register the converters:\n",
      "\t>>> from pandas.plotting import register_matplotlib_converters\n",
      "\t>>> register_matplotlib_converters()\n",
      "  warnings.warn(msg, FutureWarning)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ========== Python3 + Jupyter ========== #\n",
    "%matplotlib inline\n",
    "# 绘制一个简单的折线图\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 读取数据\n",
    "# 此处读取的为数据集中的data.csv\n",
    "data = pd.read_csv(\"/data/shixunfiles/81d2e8ac83cd6a957065e70a2b18d65b_1607062666895.csv\")\n",
    "\n",
    "# 将时间规范化\n",
    "data['Date'] = pd.to_datetime(data['Date'])\n",
    "\n",
    "# 展示数据结构与部分数据\n",
    "print(data.info())\n",
    "print(data.head(5))\n",
    "\n",
    "x_data = data['Date']\n",
    "y_data = data['Value']\n",
    "\n",
    "plt.plot(x_data,y_data)\n",
    "plt.xticks(rotation=45)\n",
    "plt.xlabel('Month')\n",
    "plt.ylabel('Value')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "绘制面积图主要采用 stackplot 函数。\n",
    "\n",
    "函数形式为`stackplot(x,*args,**kargs)`：\n",
    "- x 指定面积图的 x 轴数据\n",
    "- *args 为可变参数，可以接受任意多的 y 轴数据，即各个拆分的数据对象\n",
    "- **kargs 为关键字参数，可以通过传递其他参数来修饰面积图，如标签、颜色\n",
    "\n",
    "可用的关键字参数：\n",
    "\n",
    "labels： 以列表的形式传递每一块面积图包含的标签，通过图例展现\n",
    "\n",
    "colors： 设置不同的颜色填充面积图\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 绘制一个简单的堆积面积图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEICAYAAABRSj9aAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA0uklEQVR4nO3deXxU1dnA8d8zSSBAIASIKDsquLayRLTV19pWrVJbtZWKRVu1LVXrbm1tbau2+nazdnltS1UQN3BlJ2wKiCgii4jsIIRksu/7NjPP+0cGG2MCSWa5szzfz+d+mLnbeeaSPDlzzr3niKpijDEmdrmcDsAYY0xoWaI3xpgYZ4neGGNinCV6Y4yJcZbojTEmxlmiN8aYGGeJ3pgQEpHZIvJIN49VETk52DGZ+GOJ3kQUEckSkYuCcJ4bRGR9uI91QrTFa8LPEr0xxsQ4S/QmYojI88AIYLGI1IjIz/zrzxWRd0WkQkQ+FJELWx1zg4gcFJFqETkkItNE5DRgBvAF/3kqOiiv08eKyNdF5AMRqRKRHBF5qM25zm8VY46I3NBOeX1FZI2I/ENazBaRGSKyyh/DWyIysoNYU0XkOREpFpHDIvIrEXF19rOaOKeqttgSMQuQBVzU6v1QoBSYTEvF5GL/+3SgD1AFnOLf9wTgDP/rG4D1RymnS8cCFwKf88fweaAQuNK/bSRQDVwLJAEDgXH+bbOBR/zr3gceaXXO2f7jLgB6An9vXS6gwMn+188BC4G+wChgH/CDznxWW2yxGr2JdNcBmaqaqao+VV0FbKYl8QP4gDNFpJeq5qvqzi6cu9PHqupaVf3IH8N2YC7wJf/m7wJvqOpcVW1W1VJV3dbq8CHAW8CrqvqrNqdeqqrrVLUReICWmvnw1juISAIwFfiFqlarahbwF+D6LnxWE8cs0ZtINxKY4m8SqfA3TZwPnKCqtcA1wM1AvogsFZFTO3PSrh4rIuf4m12KRaTSf9wg/+bhwMdHKe7rQC9amljaymkVUw1QRssfhtYG0fJN4XCrdYdp+bZjzDFZojeRpu1wqjnA86rav9XSR1X/AKCqK1T1YlqaXvYAT3Vwns8W1LVj5wCLgOGqmkpL0pZWMZ50lKKeApYDmSLSp822T2rvIpICDADy2uxTAjTT8kfviBFA7lHiNeYTluhNpCkETmz1/gXgGyLyNRFJEJFkEblQRIaJyGARucKfPBuBGlqaY46cZ5iI9GivkG4c2xcoU9UGEZlES3PNES8CF4nId0QkUUQGisi4NkXeBuylpaO5V6v1k/0duT2A3wHvqWpO6wNV1Qu8Ajzq79AdCdzjvzbH/KzGWKI3keb3wK/8zTQ/9Se9K4BfAsW01J7vo+Vn10VLwsujpcnjS8At/vOsBnYCBSJS0k45XT32VuC3IlIN/IaWxAuAqmbT0mdwr/9c24CzWhemqgpMB9zAQhFJ9m+aAzzoP24iLX0S7bkdqAUOAuv9x83q5Gc1cU5afv6MMeEmIrMBdzsdtMYEldXojTEmxlmiN8aYGGdNN8YYE+OsRm+MMTEu0ekA2jNo0CAdNWqU02EYY0zU2LJlS4mqpre3LSIT/ahRo9i8ebPTYRhjTNQQkcMdbbOmG2OMiXGW6I0xJsZZojfGmBgXkW307WlubsbtdtPQ0OB0KBEpOTmZYcOGkZSU5HQoxpgIEzWJ3u1207dvX0aNGoWIHPuAOKKqlJaW4na7GT16tNPhGGMiTNQ03TQ0NDBw4EBL8u0QEQYOHGjfdowx7YqaRA9Ykj8KuzbGmI5EVaI3xhjTdVHTRt/WHX+/Mqjn+8edC7p13IUXXshjjz1GRkZGUONp7dVXX+Whhx5i9+7dvP/++yEtyxjjDI9PafYpvRKDX/+2Gn2E83q9nHnmmcybN48LLrjA6XCMMSHgrm7mS69mcbiqOSTnt0TfSVlZWZx66qlMmzaN0047jauvvpq6urpP7XPLLbeQkZHBGWecwYMPPgjA6tWrufLKKz/ZZ9WqVVx11VUArFy5ki984QtMmDCBKVOmUFNTA7QMAfHzn/+cCRMm8Oqrr3LaaadxyimnhOeDGmPCatmhasa9eJB38+tDVsYxE72IzBKRIhHZ0WrdyyKyzb9kici2Do7NEpGP/PtF/eA1e/fu5dZbb2X37t3069ePf/3rX5/a/uijj7J582a2b9/OW2+9xfbt2/nyl7/Mnj17KC4uBuCZZ57hpptuoqSkhEceeYQ33niDrVu3kpGRweOPP/7JuQYOHMjWrVuZOnVqWD+jMSY8vD7ll+8U8vWFOZQ2eENaVmdq9LOBS1uvUNVrVHWcqo4DXgfmHeX4L/v3jfqG5eHDh3PeeecBcN1117F+/fpPbX/llVeYMGEC48ePZ+fOnezatQsR4frrr+eFF16goqKCDRs2cNlll/Hee++xa9cuzjvvPMaNG8ezzz7L4cP/HZPommuuCetnM8aET35tM199/TC/31RKOGYEOWZnrKquE5FR7W2Tlnv6vgN8JchxRaS2tzC2fn/o0CEee+wxNm3aRFpaGjfccMMn97XfeOONfOMb3yA5OZkpU6aQmJiIqnLxxRczd+7cdsvq06dP6D6IMcYxb2TXMG15LkV1oa3FtxZoG/3/AIWqur+D7QqsFJEtIjL9aCcSkekisllENh9p5og02dnZbNiwAYA5c+Zw/vnnf7KtqqqKPn36kJqaSmFhIcuWLftk25AhQxgyZAiPPPIIN954IwDnnnsu77zzDgcOHACgtraWffv2hfHTGGPCyafKQxuK+Nr87LAmeQj89sprgfarpC3OV9VcETkOWCUie1R1XXs7quqTwJMAGRkZx/w2093bIQNxyimn8M9//pObbrqJ008/nVtuuYXFixcDcNZZZzF+/HhOPfXUTzXxHDFt2jSKi4s57bTTAEhPT2f27Nlce+21NDY2AvDII48wduzYz5Q7f/58br/9doqLi/n617/OuHHjWLFiRYg/rTEmWIrqPExbnssb2bWOlN/tRC8iicC3gIkd7aOquf5/i0RkPjAJaDfRR4PExEReeOGFT61bu3btJ69nz57d4bHr16/nRz/60afWfeUrX2HTpk2f2TcrK+tT76+66qpP7tQxxkSXde5api7LJb/W41gMgTTdXATsUVV3extFpI+I9D3yGrgE2NHevrFu4sSJbN++neuuu87pUIwxYaKq/O/7xXzl9cOOJnnoRI1eROYCFwKDRMQNPKiqM4GptGm2EZEhwNOqOhkYDMz3d1gmAnNUdXlwww+fUaNGsWNH9/5ObdmyJcjRGGMiWWm9h+tX5LEsq8bpUIDO3XVzbQfrb2hnXR4w2f/6IHBWgPEZY0xUeTevjqnL3ORUO1uLby1qx7oxxphI89iWEn7xThEen9ORfJolemOMCVB5g5cbVuay6GBkNNW0ZYneGGMCsKmgnu9kuskK0YBkwRC1id575figni9hwQfdOi4cwxTfd999LF68mB49enDSSSfxzDPP0L9//5CVZ4zpnH98UMp964to8oZjIIPus9ErI5zX6+Xiiy9mx44dbN++nbFjx/L73//e6bCMiWtVjV6mLM3hzrcKIz7JgyX6TnNymOJLLrmE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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 堆积面积图主要使用 stackplot 函数进行绘制\n",
    "\n",
    "# 数据共用一个横坐标\n",
    "x = np.arange(1,6,1)\n",
    "\n",
    "# 三个选手的数据\n",
    "y = [0,4,3,5,6]\n",
    "y1 = [1,3,4,2,7]\n",
    "y2 = [3,4,1,6,5]\n",
    "\n",
    "# 不同选手的标签\n",
    "participants = ['player1', 'player2', 'player3']\n",
    "# 不同选手的颜色\n",
    "colors = ['#6d904f', '#fc4f30', '#008fd5']\n",
    "\n",
    "# 绘制堆积面积图\n",
    "plt.stackplot(x,y,y1,y2,labels=participants,colors=colors)\n",
    "# 绘制标题\n",
    "plt.title(\"test stackplot\")\n",
    "\n",
    "# 调整图例位置\n",
    "plt.legend(loc='upper left')\n",
    "\n",
    "# 显示\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 绘制复杂的面积图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 19 entries, 0 to 18\n",
      "Data columns (total 6 columns):\n",
      "Unnamed: 0    17 non-null object\n",
      "Under 5       17 non-null float64\n",
      "5 to 19       17 non-null float64\n",
      "20 to 44      17 non-null float64\n",
      "45 to 64      17 non-null float64\n",
      "65+           17 non-null float64\n",
      "dtypes: float64(5), object(1)\n",
      "memory usage: 1.0+ KB\n",
      "None\n",
      "  Unnamed: 0  Under 5  5 to 19  20 to 44  45 to 64  65+\n",
      "0       1860     15.4     35.8      35.7      10.4  2.7\n",
      "1       1870     14.3     35.4      35.4      11.9  3.0\n",
      "2       1880     13.8     34.3      35.9      12.6  3.4\n",
      "3       1890     12.2     33.9      36.9      13.1  3.9\n",
      "4       1900     12.1     32.3      37.7      13.7  4.1\n"
     ]
    }
   ],
   "source": [
    "# 导入库\n",
    "import pandas as pd\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "# 读取数据\n",
    "# 这里读取的为数据集中的population.xls\n",
    "population=pd.read_excel(\"/data/shixunfiles/5204418e74911583c91c04a8ecc60133_1607137125583.xls\")\n",
    "\n",
    "# 查看数据结构与部分数据\n",
    "print(population.info())\n",
    "print(population.head(5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "1860",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m/usr/local/lib/python3.6/site-packages/pandas/core/indexes/range.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m    375\u001b[0m             \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 376\u001b[0;31m                 \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_range\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    377\u001b[0m             \u001b[0;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mValueError\u001b[0m: 1860 is not in range",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[0;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-4-9134e090b716>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     34\u001b[0m \u001b[0;31m# 1860年数据分别为15.4，35.8，35.7,10.4,2.7\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     35\u001b[0m \u001b[0;31m# 因而左侧纵轴标签为15.4，15.4+35.8,15.4+35.8+35.7，15.4+35.8+35.7+10.4，15.4+35.8+35.7+10.4+2.7\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_yticks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmake_yticks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1860\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     37\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     38\u001b[0m \u001b[0;31m# 设置第二个y轴刻度值\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m   1422\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1423\u001b[0m             \u001b[0mmaybe_callable\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_if_callable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1424\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_axis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmaybe_callable\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1425\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1426\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_is_scalar_access\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mTuple\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_getitem_axis\u001b[0;34m(self, key, axis)\u001b[0m\n\u001b[1;32m   1848\u001b[0m         \u001b[0;31m# fall thru to straight lookup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1849\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_key\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1850\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_label\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1851\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1852\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/site-packages/pandas/core/indexing.py\u001b[0m in \u001b[0;36m_get_label\u001b[0;34m(self, label, axis)\u001b[0m\n\u001b[1;32m    158\u001b[0m             \u001b[0;32mraise\u001b[0m \u001b[0mIndexingError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"no slices here, handle elsewhere\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    159\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 160\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_xs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlabel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    161\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    162\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_get_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36mxs\u001b[0;34m(self, key, axis, level, drop_level)\u001b[0m\n\u001b[1;32m   3735\u001b[0m             \u001b[0mloc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnew_index\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc_level\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdrop_level\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdrop_level\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   3736\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3737\u001b[0;31m             \u001b[0mloc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   3738\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   3739\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/site-packages/pandas/core/indexes/range.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m    376\u001b[0m                 \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_range\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    377\u001b[0m             \u001b[0;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 378\u001b[0;31m                 \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    379\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    380\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyError\u001b[0m: 1860"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建子图\n",
    "fig,ax=plt.subplots(figsize=(8,5))\n",
    " \n",
    "p1=population.iloc[0:16] #提取有效数据\n",
    "year=p1.index.astype(int) #提取年份，并转换为整数类型\n",
    " \n",
    "v1=p1[\"Under 5\"].values    #提取5岁以下的数据\n",
    "v2=p1[\"5 to 19\"].values    #提取5-19岁的数据\n",
    "v3=p1[\"20 to 44\"].values   #提取20-44岁的数据\n",
    "v4=p1[\"45 to 64\"].values   #提取45-64岁的数据\n",
    "v5=p1[\"65+\"].values        #提取65岁以上的数据\n",
    " \n",
    "# 设置y轴刻度值的一个辅助函数\n",
    "# 根据一组数据进行累加\n",
    "def make_yticks(where):\n",
    "    ytick=[]\n",
    "    sum=0\n",
    "    for i in where:\n",
    "        sum+=i\n",
    "        ytick.append(sum)\n",
    "    return ytick\n",
    " \n",
    "# 使用stackplot绘图\n",
    "ax.stackplot(year,v1,v2,v3,v4,v5)\n",
    "\n",
    "# 设置的参数为x轴范围，y轴范围，x轴标签，y轴标签\n",
    "ax.set(xlim=(1860,2005),ylim=(0,100),xlabel=\"Year\",ylabel=\"Population %\")\n",
    "\n",
    "# 设置双y轴，共享x轴\n",
    "ax1=ax.twinx()\n",
    "\n",
    "# 设置第一个y轴刻度值\n",
    "# 使用make_yticks辅助函数完成\n",
    "# 1860年数据分别为15.4，35.8，35.7,10.4,2.7\n",
    "# 因而左侧纵轴标签为15.4，15.4+35.8,15.4+35.8+35.7，15.4+35.8+35.7+10.4，15.4+35.8+35.7+10.4+2.7\n",
    "ax.set_yticks(make_yticks(p1.loc[1860]))\n",
    "\n",
    "# 设置第二个y轴刻度值\n",
    "ax1.set_yticks(make_yticks(p1.loc[2005]))\n",
    "\n",
    "# 计算2005年减去1860年的差值\n",
    "diff=[i-j for i,j in zip(p1.loc[2005],p1.loc[1860])]\n",
    "\n",
    "# 设置文字注释\n",
    "# 使用zip函数将数据进行联合\n",
    "for i,j,z in zip(make_yticks(p1.loc[2005]), p1.columns,diff): \n",
    "    # 参数设置为横坐标，纵坐标，字符串内容\n",
    "    ax.text(x=1980,y=i-6,s=j)\n",
    "    # 参数设置为横坐标，纵坐标，字符串内容，字体大小，颜色（b为blue蓝色）\n",
    "    ax.text(x=2020,y=i-6,s=z,fontsize=14,color=\"b\")\n",
    " \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 柱状图的绘制\n",
    "\n",
    "柱状图是描述统计中使用频率非常高的一种统计图形，它有垂直样式和水平样式两种可视化效果。\n",
    "\n",
    "柱状图主要是应用在定性数据的可视化场景中，或者是离散型数据的分布展示。\n",
    "\n",
    "绘制柱状图主要采用 bar 函数，表达式如下：\n",
    "\n",
    "bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3)\n",
    "\n",
    "参数：\n",
    "1. left：x 轴的位置序列，一般采用 arange 函数产生一个序列；\n",
    "2. height：y 轴的数值序列，也就是柱形图的高度，一般就是我们需要展示的数据；\n",
    "3. alpha：透明度；\n",
    "4. width：为柱形图的宽度，一般这是为 0.8 即可；\n",
    "5. color 或 facecolor：柱形图填充的颜色；\n",
    "6. edgecolor：图形边缘颜色；\n",
    "7. label：解释每个图像代表的含义；\n",
    "8. linewidth或lw：边缘 or 线的宽度。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 绘制一个普通的柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入库\n",
    "import matplotlib.pyplot as plt\n",
    " \n",
    "x = [0.3,0.7];\n",
    "y = [60,40];\n",
    "color = ['blue','red'];\n",
    "lable = ['man','woman'];\n",
    " \n",
    "def paint1():\n",
    "    plt.bar(x,y,width=0.2,\n",
    "            color=color,align='center',\n",
    "            tick_label=lable);\n",
    "    plt.xlim(0,1);\n",
    "    plt.ylim(0,100);\n",
    "    plt.show();\n",
    " \n",
    "paint1();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 绘制并列式柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入库\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    " \n",
    "def axis(xi,xm,yi,ym): # 设置坐标轴范围\n",
    "    plt.xlim(xi,xm);\n",
    "    plt.ylim(yi,ym);\n",
    " \n",
    "def paint2():\n",
    "    num1=np.array([9,13,19,30]);\n",
    "    num2=np.array([8,10,18,26]);\n",
    "    width=0.3;\n",
    "    x = np.array([x for x in range(1,5)]); # 第一个数据序列x轴\n",
    "    x1 = x-width; # 为使其并列，使得第一个x轴序列全部减去条宽度\n",
    " \n",
    "    plt.bar(x1,num1,width=width,color='blue',label='first');\n",
    "    plt.bar(x,num2,width=width,color='green',label='second');\n",
    "    plt.legend(loc='upper left'); # 设置标签显示在左上角\n",
    "    axis(0,5,0,30);\n",
    "    plt.show();\n",
    " \n",
    "paint2();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 绘制堆叠式柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入库\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "def paint3():\n",
    "    num1=np.array([10,15,16,28]);\n",
    "    num2=num1+np.array([10,12,18,26]);\n",
    "    ymax = max(num2);\n",
    "    width=0.3;\n",
    "    x = np.array([x for x in range(1,5)]);\n",
    "    plt.bar(x,num2,width=width,color='green',label='second',align='center'); \n",
    "    # 避免下面的数据颜色被掩盖，需要先画第二个数据条\n",
    "    plt.bar(x,num1,width=width,color='blue',label='first',align='center');\n",
    "    plt.legend(loc='upper left');\n",
    "    # 使用自定义函数设置x轴和y轴的范围\n",
    "    axis(0,5,0,ymax+5);\n",
    "    plt.show();\n",
    " \n",
    "paint3();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 绘制复杂的直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "# 导入库\n",
    "import numpy as np\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def title_table(ax):\n",
    "    '''为图表添加标题和表格'''\n",
    "    ax.set_title(label=f'No.{i+1}',    # 标题\n",
    "                loc='center',          # 居中位置\n",
    "                pad=None,             # 图像边界与子图的间距设置为无\n",
    "                fontdict={'color':'b'}) # 字体字典设置，这里设置颜色为蓝色\n",
    "    ax.table(loc='upper right',\n",
    "          colLabels=[f'{i+2} args'],    # 表格每列的列名称\n",
    "          colColours=['g'],    # 表格每列列名称所在单元格的填充颜色\n",
    "          colLoc='left',    # 表格中每列列名称的对齐位置\n",
    "          colWidths=[0.15],    # 表格每列的宽度         \n",
    "          cellText=args,    # 表格中的数值, 每行数据的列表的列表\n",
    "          cellColours=[['cornsilk']]*len(args),    # 表格中数据所在单元格的填充颜色\n",
    "          cellLoc='left',    # 表格中数据的对齐位置\n",
    "          fontsize=8)\n",
    "\n",
    "# 配置字体显示中文\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']  \n",
    "# 配置坐标轴刻度值模式，显示负号\n",
    "mpl.rcParams['axes.unicode_minus'] = True\n",
    "\n",
    "# 定义数据\n",
    "x = [1, 2, 3, 4, 5]\n",
    "y = [8, 10, 7, 5, 1]\n",
    "labels = list('ABCDE')\n",
    "                   \n",
    "fig, axes = plt.subplots(nrows=3,\n",
    "                         ncols=3,\n",
    "                         sharex=True,    # 共享x轴\n",
    "                         sharey=True,    # 共享y轴\n",
    "                         figsize=(16, 20),\n",
    "                         facecolor='cornsilk') # 设置背景颜色\n",
    "# 将句柄的二维数组按照一维平铺，方便直接通过一维进行访问\n",
    "axes = axes.ravel()\n",
    "\n",
    "i = 0\n",
    "ax = axes[i]\n",
    "\n",
    "# 绘制柱状图\n",
    "ax.bar(x=x,    # 柱体在 x 轴上的坐标位置\n",
    "        height=y,    # 柱体的高度\n",
    "       )\n",
    "args = [[e] for e in ['x', 'height']]\n",
    "\n",
    "# 向图表子区添加标题和数据表\n",
    "title_table(ax)\n",
    "\n",
    "i = 1\n",
    "ax = axes[i]\n",
    "\n",
    "# 绘制柱状图\n",
    "ax.bar(x=x,    # 柱体在 x 轴上的坐标位置\n",
    "        height=y,    # 柱体的高度\n",
    "        align='edge',    #  x 轴上的坐标与柱体对其的位置\n",
    "       )\n",
    "\n",
    "args = [[e] for e in ['x', 'height', 'align']]\n",
    "# 向图表子区添加标题和数据表\n",
    "title_table(ax)\n",
    "\n",
    "i = 2\n",
    "ax = axes[i]\n",
    "\n",
    "# 绘制柱状图\n",
    "ax.bar(x=x,    # 柱体在 x 轴上的坐标位置\n",
    "        height=y,    # 柱体的高度\n",
    "        align='edge',    #  x 轴上的坐标与柱体对其的位置\n",
    "        color='c',    # 柱体的填充颜色\n",
    "        )\n",
    "\n",
    "args = [[e] for e in ['x', 'height', 'align', 'color']]\n",
    "# 向图表子区添加标题和数据表\n",
    "title_table(ax)\n",
    "\n",
    "i = 3\n",
    "ax = axes[i]\n",
    "\n",
    "# 绘制柱状图\n",
    "ax.bar(x=x,    # 柱体在 x 轴上的坐标位置\n",
    "        height=y,    # 柱体的高度\n",
    "        align='edge',    #  x 轴上的坐标与柱体对齐的位置\n",
    "        color='cyan',    # 柱体的填充颜色\n",
    "        tick_label=labels,    # 每个柱体的标签名称\n",
    "        )\n",
    "\n",
    "args = [[e] for e in ['x', 'height', 'align', 'color', 'tick_label']]\n",
    "# 向图表子区添加标题和数据表\n",
    "title_table(ax)\n",
    "\n",
    "i = 4\n",
    "ax = axes[i]\n",
    "\n",
    "# 绘制柱状图\n",
    "ax.bar(x=x,    # 柱体在 x 轴上的坐标位置\n",
    "        height=y,    # 柱体的高度\n",
    "        align='edge',    #  x 轴上的坐标与柱体对其的位置\n",
    "        color='blue',    # 柱体的填充颜色\n",
    "        tick_label=labels,    # 每个柱体的标签名称\n",
    "        alpha=0.6    # 柱体填充颜色的透明度\n",
    "        )\n",
    "\n",
    "args = [[e] for e in ['x', 'height', 'align', 'color', 'tick_label', 'alpha']]\n",
    "# 向图表子区添加标题和数据表\n",
    "title_table(ax)\n",
    "\n",
    "i = 5\n",
    "ax = axes[i]\n",
    "\n",
    "# 绘制柱状图\n",
    "ax.bar(x=x,    # 柱体在 x 轴上的坐标位置\n",
    "        height=y,    # 柱体的高度\n",
    "        align='edge',    #  x 轴上的坐标与柱体对其的位置\n",
    "        color='wheat',    # 柱体的填充颜色\n",
    "        tick_label=labels,    # 每个柱体的标签名称\n",
    "        alpha=0.6,    # 柱体填充颜色的透明度\n",
    "        width=1,  # 柱体的宽度\n",
    "        )\n",
    "\n",
    "args = [[e] for e in ['x', 'height', 'align', 'color', 'tick_label', 'alpha', 'width']]\n",
    "# 向图表子区添加标题和数据表\n",
    "title_table(ax)\n",
    "\n",
    "i = 6\n",
    "ax = axes[i]\n",
    "\n",
    "# 绘制柱状图\n",
    "ax.bar(x=x,    # 柱体在 x 轴上的坐标位置\n",
    "        height=y,    # 柱体的高度\n",
    "        align='edge',    #  x 轴上的坐标与柱体对其的位置\n",
    "        color='aqua',    # 柱体的填充颜色\n",
    "        tick_label=labels,    # 每个柱体的标签名称\n",
    "        alpha=0.6,    # 柱体填充颜色的透明度\n",
    "        width=0.8,    # 柱体的宽度\n",
    "        bottom=0.2,     # 柱体基线的 y 轴坐标\n",
    "        )\n",
    "\n",
    "args = [[e] for e in ['x', 'height', 'align', 'color', 'tick_label', 'alpha', 'width',\n",
    "                      'bottom']]\n",
    "# 向图表子区添加标题和数据表\n",
    "title_table(ax)\n",
    "\n",
    "i = 7\n",
    "ax = axes[i]\n",
    "\n",
    "# 绘制柱状图\n",
    "ax.bar(x=x,    # 柱体在 x 轴上的坐标位置\n",
    "        height=y,    # 柱体的高度\n",
    "        align='edge',    #  x 轴上的坐标与柱体对其的位置\n",
    "        color='lightpink',    # 柱体的填充颜色\n",
    "        tick_label=labels,    # 每个柱体的标签名称\n",
    "        alpha=0.6,    # 柱体填充颜色的透明度\n",
    "        width=0.8,    # 柱体的宽度\n",
    "        bottom=0.2,    # 柱体基线的 y 轴坐标\n",
    "        edgecolor='g'   # 柱体的边框颜色\n",
    "        )\n",
    "\n",
    "args = [[e] for e in ['x', 'height', 'align', 'color', 'tick_label', 'alpha', 'width',\n",
    "                      'bottom', 'edgecolor']]\n",
    "# 向图表子区添加标题和数据表\n",
    "title_table(ax)\n",
    "\n",
    "i = 8\n",
    "ax = axes[i]\n",
    "\n",
    "# 绘制柱状图\n",
    "ax.bar(x=x,    # 柱体在 x 轴上的坐标位置\n",
    "        height=y,    # 柱体的高度\n",
    "        align='center',    #  x 轴上的坐标与柱体对其的位置\n",
    "        color='bisque',    # 柱体的填充颜色\n",
    "        tick_label=labels,    # 每个柱体的标签名称\n",
    "        alpha=0.6,    # 柱体填充颜色的透明度\n",
    "        width=0.8,    # 柱体的宽度\n",
    "        bottom=0.2,    # 柱体基线的 y 轴坐标\n",
    "        edgecolor='g',   # 柱体的边框颜色\n",
    "        linewidth=1.5,   # 柱体边框线的宽度\n",
    "        )\n",
    "\n",
    "args = [[e] for e in ['x', 'height', 'align', 'color', 'tick_label', 'alpha', 'width',\n",
    "                      'bottom', 'edgecolor', 'linewidth']]\n",
    "# 向图表子区添加标题和数据表\n",
    "title_table(ax)\n",
    "\n",
    "# 设置整个子区的布局\n",
    "fig.subplots_adjust(left=0,\n",
    "                    bottom=0,\n",
    "                    right=0.9,\n",
    "                    top=1,\n",
    "                    wspace=0.1,    # 子区间空白区域的宽度的归一化值\n",
    "                    hspace=0.2);    # 子区间空白区域的高度的归一化值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "至此，面积图和柱状图的绘制结束。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
